A mobile communications network is defined as any communications network that has over-the-air data/voice transmissions between a mobile client device (i.e. a handset, computer, mobile router, etc.) and a network base station (i.e. Access point, cell site, etc.). Common commercial examples include Wi-Fi networks, and 2G, 3G, 4G (LTE) and upcoming 5G cellular networks. In such networks the endpoint of the network, the network base station, acts as the entry point into the network. It converts the over-the-air communications with the mobile client device into wired communications back into the network using technologies such as Ethernet and IP.
This application relates to enhancing report writing capabilities in off-the-shelf business intelligence (BI) applications. A problem with some off-the-shelf BI applications is that the data visualizations that can be rendered are constrained to data that can retrieved in a query specified in SQL. It is impossible for a BI tool to display data from a system that is accessible through an interface other than SQL (e.g. Web Services). Some data systems even though they support SQL don't support a procedural language as an extension to SQL, making impossible to combine SQL with custom procedures or functions. At least partially because SQL does not support an if/then/else structure, either the user would have to write and maintain many separate queries that are very similar, or to package a single query to handle all similar variations would be cumbersome and potentially error prone. Packaging a single SQL query would need to be expressed as multiple subqueries with a “union all” operator to combine results retrieved from each of the subqueries. Each of the subqueries would retrieve data conditionally depending on the WHERE clause. Only one of the subqueries may have its WHERE clause condition satisfied based on a combination of parameter values; thus, only one of the subqueries would may retrieve data. Processing the other subqueries that would not retrieve results may negatively impact performance and potentially confuse the database query optimizer. For example, when similar reports are needed that use different tables having a similar structure, a distinct subquery is needed for each data table that holds similar data. That is, each of the subqueries would have a SELECT clause with a different table name. Another example is writing a query that selects data that is relative to current time (e.g. last processed interval) versus a specific interval. Each subquery may include a condition indicating the constraints placed on timestamps of the data being retrieved. Writing a query in this way would likely be prone to coding errors and may adversely affect the performance of the query. In other words, lack of support for templates causes users to create many similar but slightly different SQL queries. It would be desirable to allow a user to continue using off-the-shelf applications but providing more flexibility to specify the desired data without having to duplicate effort.
A business intelligence application such as Tableau accesses the database using the Open Database Connectivity (ODBC) interface. ODBC is a standard application programming interface (API) for accessing database management systems (DBMS). The application uses ODBC functions through an ODBC driver with which it is linked. The ODBC driver that is used is specific to particular vendor's database server, and often the database vendor provides the ODBC driver. The driver passes the query to the database management system (DBMS), handling DBMS-specific protocols and formats, and using DBMS-specific functionality. For example, Tableau may retrieve data from a Vertica database using an ODBC driver for Vertica.